package com.xhtt.common.utils;

import com.xhtt.modules.sys.entity.SysMenuEntity;
import com.xhtt.modules.sys.entity.SysUserPosition;
import org.yeauty.pojo.Session;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.concurrent.LinkedBlockingQueue;

/**
 * 常量
 *
 * @author chenshun
 * @email sunlightcs@gmail.com
 * @date 2016年11月15日 下午1:23:52
 */
public class Constant {
    /**
     * 超级管理员ID
     */
    public static final int SUPER_ADMIN = 1;

    public static final String DATA = "result";

    public static final Long[] AdminMenuIds = new Long[]{};

    public static final String ZCZ = "装车组";//装车组名字，全局统一

    public static Map<Long, Map<Long,List<SysMenuEntity>>> webMenu = new HashMap<>();
    public static Map<Long, List<SysMenuEntity>> appMenu = new HashMap<>();

    public static List<SysUserPosition> userPositionList = new ArrayList();//用户位置
    public static LinkedBlockingQueue<Session> webSocketSessionQueue = new LinkedBlockingQueue();//用户webSocketSession

    /**
     * 菜单类型
     *
     * @author chenshun
     * @email sunlightcs@gmail.com
     * @date 2016年11月15日 下午1:24:29
     */
    public enum MenuType {
        /**
         * 目录
         */
        CATALOG(0),
        /**
         * 菜单
         */
        MENU(1),
        /**
         * 按钮
         */
        BUTTON(2);

        private int value;

        MenuType(int value) {
            this.value = value;
        }

        public int getValue() {
            return value;
        }
    }

    /**
     * 定时任务状态
     *
     * @author chenshun
     * @email sunlightcs@gmail.com
     * @date 2016年12月3日 上午12:07:22
     */
    public enum ScheduleStatus {
        /**
         * 正常
         */
        NORMAL(0),
        /**
         * 暂停
         */
        PAUSE(1);

        private int value;

        ScheduleStatus(int value) {
            this.value = value;
        }

        public int getValue() {
            return value;
        }
    }

    /**
     * 云服务商
     */
    public enum CloudService {
        /**
         * 七牛云
         */
        QINIU(1),
        /**
         * 阿里云
         */
        ALIYUN(2),
        /**
         * 腾讯云
         */
        QCLOUD(3);

        private int value;

        CloudService(int value) {
            this.value = value;
        }

        public int getValue() {
            return value;
        }
    }

    /**
     * 状态
     */
    public enum CardStatus {

        /**
         * 试用
         */
        TRYOUT(1, "试用"),
        /**
         * 正常
         */
        VALID(2, "正常"),
        //待审核，未审核;
        /**
         * 过期
         */
        INVALID(3, "过期");


        private int index;
        private String value;

        private CardStatus(int index, String value) {
            this.index = index;
            this.value = value;
        }


        public int getIndex() {
            return index;
        }

        public void setIndex(int index) {
            this.index = index;
        }

        public String getValue() {
            return value;
        }

        public void setValue(String value) {
            this.value = value;
        }


    }

    /**
     * 删除标识
     */
    public enum DeleteFlag {
        /**
         * 未删除
         */
        NORMAL(0),
        /**
         * 删除
         */
        DELETE(1);

        private int value;


        DeleteFlag(int value) {
            this.value = value;
        }

        public int getValue() {
            return value;
        }
    }

    /**
     * 状态
     */
    public enum CompanyStatus {
        /**
         * 正常
         */
        NORMAL(1),
        /**
         * 禁用
         */
        DELETE(0);

        private int value;

        CompanyStatus(int value) {
            this.value = value;
        }

        public int getValue() {
            return value;
        }
    }


    /**
     * 申请状态
     */
    public enum ApplyStatus {

        DRAFT(10, "草稿"),
        APPLYING(20, "申请中"),
        BACK(30, "退回"),
        ORG_BACK(31, "退回"),
        NO_PASS(40, "不通过"),
        PASS(50, "通过");

        private int value;
        private String label;

        ApplyStatus(int value, String label) {
            this.value = value;
            this.label = label;
        }

        public int getValue() {
            return value;
        }

        public String getLabel() {
            return label;
        }
    }


    /**
     * 保存类型
     */
    public enum SaveType {

        SAVE("save", "保存"),
        SUBMIT("submit", "提交");

        private String value;
        private String label;

        SaveType(String value, String label) {
            this.value = value;
            this.label = label;
        }

        public String getValue() {
            return value;
        }

        public String getLabel() {
            return label;
        }
    }


    /**
     * 操作步骤
     */
    public enum StepName {

        APPLY("评审申请"),
        PLAN("评审计划"),
        REVIEW("现场评审"),
        GOV_REVIEW("政府审核");

        private String value;

        StepName(String value) {
            this.value = value;
        }

        public String getValue() {
            return value;
        }
    }

}
